diff --git a/README b/README
index 22e35c3..7affe10 100644
--- a/README
+++ b/README
@@ -2447,6 +2447,19 @@
 	- CONFIG_SYS_EEPROM_SIZE:
 	  The size in bytes of the EEPROM device.
 
+	- CONFIG_ENV_EEPROM_IS_ON_I2C
+	  define this, if you have I2C and SPI activated, and your
+	  EEPROM, which holds the environment, is on the I2C bus.
+
+	- CONFIG_I2C_ENV_EEPROM_BUS
+	  if you have an Environment on an EEPROM reached over
+	  I2C muxes, you can define here, how to reach this
+	  EEPROM. For example:
+
+	  #define CONFIG_I2C_ENV_EEPROM_BUS       "pca9547:70:d\0"
+
+	  EEPROM which holds the environment, is reached over
+	  a pca9547 i2c mux with address 0x70, channel 3.
 
 - CONFIG_ENV_IS_IN_DATAFLASH:
 
diff --git a/common/cmd_eeprom.c b/common/cmd_eeprom.c
index 102efaf..519b510 100644
--- a/common/cmd_eeprom.c
+++ b/common/cmd_eeprom.c
@@ -79,7 +79,7 @@
 		ulong cnt  = simple_strtoul (argv[4], NULL, 16);
 #endif /* CONFIG_SYS_I2C_MULTI_EEPROMS */
 
-# ifndef CONFIG_SPI
+# if !defined(CONFIG_SPI) || defined(CONFIG_ENV_EEPROM_IS_ON_I2C)
 		eeprom_init ();
 # endif /* !CONFIG_SPI */
 
@@ -118,7 +118,7 @@
  *   0x00000nxx for EEPROM address selectors and page number at n.
  */
 
-#ifndef CONFIG_SPI
+#if !defined(CONFIG_SPI) || defined(CONFIG_ENV_EEPROM_IS_ON_I2C)
 #if !defined(CONFIG_SYS_I2C_EEPROM_ADDR_LEN) || CONFIG_SYS_I2C_EEPROM_ADDR_LEN < 1 || CONFIG_SYS_I2C_EEPROM_ADDR_LEN > 2
 #error CONFIG_SYS_I2C_EEPROM_ADDR_LEN must be 1 or 2
 #endif
@@ -176,7 +176,7 @@
 			len = maxlen;
 #endif
 
-#ifdef CONFIG_SPI
+#if defined(CONFIG_SPI) && !defined(CONFIG_ENV_EEPROM_IS_ON_I2C)
 		spi_read (addr, alen, buffer, len);
 #else
 		if (i2c_read (addr[0], offset, alen-1, buffer, len) != 0)
@@ -272,7 +272,7 @@
 			len = maxlen;
 #endif
 
-#ifdef CONFIG_SPI
+#if defined(CONFIG_SPI) && !defined(CONFIG_ENV_EEPROM_IS_ON_I2C)
 		spi_write (addr, alen, buffer, len);
 #else
 #if defined(CONFIG_SYS_EEPROM_X40430)
@@ -374,7 +374,7 @@
 	return rcode;
 }
 
-#ifndef CONFIG_SPI
+#if !defined(CONFIG_SPI) || defined(CONFIG_ENV_EEPROM_IS_ON_I2C)
 int
 eeprom_probe (unsigned dev_addr, unsigned offset)
 {
@@ -403,7 +403,8 @@
 
 void eeprom_init  (void)
 {
-#if defined(CONFIG_SPI)
+
+#if defined(CONFIG_SPI) && !defined(CONFIG_ENV_EEPROM_IS_ON_I2C)
 	spi_init_f ();
 #endif
 #if defined(CONFIG_HARD_I2C) || \
@@ -411,6 +412,7 @@
 	i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
 #endif
 }
+
 /*-----------------------------------------------------------------------
  */
 
diff --git a/common/env_eeprom.c b/common/env_eeprom.c
index 1578d61..30de4e9 100644
--- a/common/env_eeprom.c
+++ b/common/env_eeprom.c
@@ -28,18 +28,73 @@
 #include <command.h>
 #include <environment.h>
 #include <linux/stddef.h>
+#if defined(CONFIG_I2C_ENV_EEPROM_BUS)
+#include <i2c.h>
+#endif
 
 DECLARE_GLOBAL_DATA_PTR;
 
 env_t *env_ptr = NULL;
 
 char * env_name_spec = "EEPROM";
+int env_eeprom_bus = -1;
+
+static int eeprom_bus_read (unsigned dev_addr, unsigned offset, uchar *buffer,
+				unsigned cnt)
+{
+	int rcode;
+#if defined(CONFIG_I2C_ENV_EEPROM_BUS)
+	int old_bus = i2c_get_bus_num();
+
+	if (gd->flags & GD_FLG_RELOC) {
+		if (env_eeprom_bus == -1) {
+			I2C_MUX_DEVICE *dev = NULL;
+			dev = i2c_mux_ident_muxstring(
+				(uchar *)CONFIG_I2C_ENV_EEPROM_BUS);
+			if (dev != NULL) {
+				env_eeprom_bus = dev->busid;
+			} else
+				printf ("error adding env eeprom bus.\n");
+		}
+		if (old_bus != env_eeprom_bus) {
+			i2c_set_bus_num(env_eeprom_bus);
+			old_bus = env_eeprom_bus;
+		}
+	} else {
+		rcode = i2c_mux_ident_muxstring_f(
+				(uchar *)CONFIG_I2C_ENV_EEPROM_BUS);
+	}
+#endif
+
+	rcode = eeprom_read (dev_addr, offset, buffer, cnt);
+#if defined(CONFIG_I2C_ENV_EEPROM_BUS)
+	if (old_bus != env_eeprom_bus)
+		i2c_set_bus_num(old_bus);
+#endif
+	return rcode;
+}
+
+static int eeprom_bus_write (unsigned dev_addr, unsigned offset, uchar *buffer,
+				unsigned cnt)
+{
+	int rcode;
+#if defined(CONFIG_I2C_ENV_EEPROM_BUS)
+	int old_bus = i2c_get_bus_num();
+
+	rcode = i2c_mux_ident_muxstring_f((uchar *)CONFIG_I2C_ENV_EEPROM_BUS);
+#endif
+	rcode = eeprom_write (dev_addr, offset, buffer, cnt);
+#if defined(CONFIG_I2C_ENV_EEPROM_BUS)
+	i2c_set_bus_num(old_bus);
+#endif
+	return rcode;
+}
 
 uchar env_get_char_spec (int index)
 {
 	uchar c;
 
-	eeprom_read (CONFIG_SYS_DEF_EEPROM_ADDR,
+	eeprom_bus_read (CONFIG_SYS_DEF_EEPROM_ADDR,
 		     CONFIG_ENV_OFFSET+index+offsetof(env_t,data),
 		     &c, 1);
 
@@ -48,7 +103,7 @@
 
 void env_relocate_spec (void)
 {
-	eeprom_read (CONFIG_SYS_DEF_EEPROM_ADDR,
+	eeprom_bus_read (CONFIG_SYS_DEF_EEPROM_ADDR,
 		     CONFIG_ENV_OFFSET,
 		     (uchar*)env_ptr,
 		     CONFIG_ENV_SIZE);
@@ -56,7 +111,7 @@
 
 int saveenv(void)
 {
-	return eeprom_write (CONFIG_SYS_DEF_EEPROM_ADDR,
+	return eeprom_bus_write (CONFIG_SYS_DEF_EEPROM_ADDR,
 			     CONFIG_ENV_OFFSET,
 			     (uchar *)env_ptr,
 			     CONFIG_ENV_SIZE);
@@ -77,7 +132,7 @@
 	eeprom_init ();	/* prepare for EEPROM read/write */
 
 	/* read old CRC */
-	eeprom_read (CONFIG_SYS_DEF_EEPROM_ADDR,
+	eeprom_bus_read (CONFIG_SYS_DEF_EEPROM_ADDR,
 		     CONFIG_ENV_OFFSET+offsetof(env_t,crc),
 		     (uchar *)&crc, sizeof(ulong));
 
@@ -87,7 +142,8 @@
 	while (len > 0) {
 		int n = (len > sizeof(buf)) ? sizeof(buf) : len;
 
-		eeprom_read (CONFIG_SYS_DEF_EEPROM_ADDR, CONFIG_ENV_OFFSET+off, buf, n);
+		eeprom_bus_read (CONFIG_SYS_DEF_EEPROM_ADDR,
+				CONFIG_ENV_OFFSET + off, buf, n);
 		new = crc32 (new, buf, n);
 		len -= n;
 		off += n;
diff --git a/include/common.h b/include/common.h
index 8197508..391790a 100644
--- a/include/common.h
+++ b/include/common.h
@@ -336,7 +336,9 @@
 #if defined(CONFIG_SPI) || !defined(CONFIG_SYS_I2C_EEPROM_ADDR)
 # define CONFIG_SYS_DEF_EEPROM_ADDR 0
 #else
+#if !defined(CONFIG_ENV_EEPROM_IS_ON_I2C)
 # define CONFIG_SYS_DEF_EEPROM_ADDR CONFIG_SYS_I2C_EEPROM_ADDR
+#endif
 #endif /* CONFIG_SPI || !defined(CONFIG_SYS_I2C_EEPROM_ADDR) */
 
 #if defined(CONFIG_SPI)
